package com.hmdp.utils;

/**
 * ClassName DateUtil
 * Description TODO
 *
 * @author qq
 * @date 2024/07/08 9:21
 * @since JDK 1.8
 */
public class DateUtil {
    /**
     * 获取指定年月（格式为"YYYY-MM"）的天数
     *
     * @param year  month
     * @return 该月有多少天
     */
    public static int getDaysInMonth(int year,int month) {

        // 验证月份是否在有效范围内
        if (month < 1 || month > 12) {
            throw new IllegalArgumentException("Invalid month: " + month);
        }

        // 每个月的天数
        int[] daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

        // 如果是2月并且是闰年，则天数为29
        if (month == 2 && isLeapYear(year)) {
            return 29;
        }

        // 返回对应月份的天数
        return daysInMonth[month - 1]; // 数组索引从0开始，月份从1开始
    }

    /**
     * 判断给定的年份是否为闰年
     *
     * @param year 年份
     * @return 如果是闰年则返回true，否则返回false
     */
    public static boolean isLeapYear(int year) {
        // 如果年份能被4整除但不能被100整除，或者能被400整除，则是闰年
        return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
    }

    // 示例用法
    public static void main(String[] args) {
        System.out.println(getDaysInMonth(2023,2)); // 输出：28
        System.out.println(getDaysInMonth(2020,2)); // 输出：29
        System.out.println(getDaysInMonth(2023,4)); // 输出：30
    }
}
